//
//  ZYDeviceHelper.swift
//  SwiftDemo1
//
//  Created by wangzhipan on 2025/6/3.
//

import Foundation
import UIKit

// MARK: - iPhone 高度信息工具类
class ZYDeviceHelper {
    
    // MARK: - 单例
    static let shared = ZYDeviceHelper()
    private init() {}
    
    // MARK: - 安全区域顶部高度
    var safeTop: CGFloat {
        return getSafeAreaInsets().top
    }
    
    // MARK: - 安全区域底部高度
    var safeBottom: CGFloat {
        return getSafeAreaInsets().bottom
    }
    
    // MARK: - 状态栏高度
    var statusBarHeight: CGFloat {
        if #available(iOS 13.0, *) {
            if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
                return windowScene.statusBarManager?.statusBarFrame.height ?? 0
            }
        }
        return UIApplication.shared.statusBarFrame.height
    }
    
    // MARK: - 导航栏高度（固定44）
    var navigationBarHeight: CGFloat {
        return 44.0
    }
    
    // MARK: - TabBar 高度
    var tabBarHeight: CGFloat {
        let baseHeight: CGFloat = 49.0
        return baseHeight + safeBottom
    }
    
    // MARK: - 顶部总高度（状态栏 + 导航栏）
    var topBarHeight: CGFloat {
        return statusBarHeight + navigationBarHeight
    }
    
    // MARK: - 获取安全区域
    private func getSafeAreaInsets() -> UIEdgeInsets {
        if #available(iOS 11.0, *) {
            // iOS 13+ 优先方案
            if #available(iOS 13.0, *) {
                if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
                   let window = windowScene.windows.first {
                    return window.safeAreaInsets
                }
            }
            
            // iOS 11-12 方案
            if let window = UIApplication.shared.windows.first {
                return window.safeAreaInsets
            }
            
            // 备用方案
            if let keyWindow = UIApplication.shared.keyWindow {
                return keyWindow.safeAreaInsets
            }
        }
        return UIEdgeInsets.zero
    }
    
    // MARK: - 打印所有高度信息（调试用）
    func printAllHeights() {
        print("=== iPhone 高度信息 ===")
        print("安全区域顶部: \(safeTop)")
        print("安全区域底部: \(safeBottom)")
        print("状态栏高度: \(statusBarHeight)")
        print("导航栏高度: \(navigationBarHeight)")
        print("TabBar高度: \(tabBarHeight)")
        print("顶部总高度: \(topBarHeight)")
        print("屏幕尺寸: \(UIScreen.main.bounds.size)")
    }
}

// MARK: - 全局便捷函数
func safeTop() -> CGFloat {
    return ZYDeviceHelper.shared.safeTop
}

func safeBottom() -> CGFloat {
    return ZYDeviceHelper.shared.safeBottom
}

func statusBarHeight() -> CGFloat {
    return ZYDeviceHelper.shared.statusBarHeight
}

func navigationBarHeight() -> CGFloat {
    return ZYDeviceHelper.shared.navigationBarHeight
}

func tabBarHeight() -> CGFloat {
    return ZYDeviceHelper.shared.tabBarHeight
}

func topBarHeight() -> CGFloat {
    return ZYDeviceHelper.shared.topBarHeight
}




